package controle;

import java.util.List;

import modelo.Equipe;
import modelo.Jogador;
import dao.DAOFactory;
import dao.EquipeDAO;
import dao.JogadorDAO;


public class ControleEquipe {
/*CRUD*/
	public void salvar(Equipe equipe) throws Exception{
		if(equipe.getNome() == null || equipe.getNome().trim().isEmpty()){
			throw new Exception("O nome � obrgat�rio!");
		}
		
		if(equipe.getTecnico() == null || equipe.getTecnico().trim().isEmpty()){
			throw new Exception("O t�cnico � obrigat�rio!");
		}
		
		for (int i = 0; i < equipe.getJogadores().size(); i++) {
			equipe.getJogadores().get(i).setEquipe(equipe);
		}
		
		EquipeDAO equipeDao = DAOFactory.getEquipeDAO();
		if(equipe.getId() == 0){
			equipeDao.salvar(equipe);
		}else{
			equipeDao.alterar();
		}	
	}
	
	public void excluir(Equipe equipe)throws Exception{
		if(equipe == null){
			throw new Exception("� obrigat�rio selecionar uma equipe para excluir!");
		}
		EquipeDAO equipeDao = DAOFactory.getEquipeDAO();
		equipeDao.excluir(equipe);
	}
/*FIM CRUD*/
/*LISTA*/
	public List<Jogador> listarJogadores() {
		JogadorDAO jogadorDao = DAOFactory.getJogadorDAO();
		return jogadorDao.buscarTodos();
	}
	
	public List<Equipe> listarTodos() {
		EquipeDAO equipeDao = DAOFactory.getEquipeDAO();
		return equipeDao.buscarTodos();
	}
		
	public Equipe buscarPorId(long id) throws Exception {
		if (id <= 0) {
			throw new Exception("O ID � obrigat�rio para a consulta!");
		}
		EquipeDAO equipeDAO = DAOFactory.getEquipeDAO();
		return equipeDAO.buscarPorId(id);
	}
	
	public List<Equipe> buscarPorNome(String nome) throws Exception {
		if (nome == null || nome.trim().isEmpty()) {
			throw new Exception("� obrigat�rio indicar um nome para pesquisa!");
		}
		EquipeDAO equipeDao = DAOFactory.getEquipeDAO();
		return equipeDao.buscarPorNome(nome);
	}
	
	public List<Equipe> buscarPorTecnico(String tecnico) throws Exception {
		if (tecnico == null || tecnico.trim().isEmpty()) {
			throw new Exception("� obrigat�rio indicar um tecnico para pesquisa!");
		}
		EquipeDAO equipeDao = DAOFactory.getEquipeDAO();
		return equipeDao.buscarPorTecnico(tecnico);
	}
/*FIM LISTA*/
}
